하드웨어 해킹 기초

2020-07-07
  • RTOS(←Real Time Operating System)

    • 군사 제품 미사일, 전투기, 전차 등에 사용
    • 실시간성 : 빠르게 실행되는 것이 아닌 정해진 시간(데드라인) 안에 수행되서 완료되어야 한다.
    • Reliablity가 요구되어 동적 할당 사용을 지양하고 항상 같은 결과가 나올 수 있도록 함
  • OS단에서 32비트를 64비트 시스템으로 포팅하는 것은 프로그램 단이랑 차원이 다르다.
  • 하드웨어 해킹이란

    • 주변의 흔한 제품 해킹
    • 흔하지 않은 제품

      • CCTV, 자동차, 드론, 비행기 등

        • 항공기 SW는 매우 엄격한 인증을 받아야 함

          • 설계부터 테스트까지 과정 추적
          • 모든 코드 테스트
          • 과정 추적에서 문제가 없다고 버그가 없다고 단정할 수 없음
          • 비행기 관련 소스는 오픈되있지 않고, 외부와 연결되있지 않아 안전한 편이지만 앞으로 AI나 Connectivity가 강화되면 외부와 연결될 가능성있다.
      • 의료기기, 스마트팜, 산업용 제품 등

        • 산업용 제품은 구매 이후 오래되어 취약해질 수 있다.

          • 복합기의 경우 중요 문서 유출될 수 있다.
      • multilevel feedback queue(다단계 피드백 큐) MLFQ : 스케줄링 방식
      • 임베디드 개발

        • 임베디드 SW는 일반 SW보다 작거나 같은 크기

          • 펌웨어, RTOS 레벨이 아니면 둘은 비슷하다.
        • 기능이 매우 간단
        • 저성능 → 요구 전력이 낮음
        • 펌웨어 기능에 스케줄러가 필요하면 RTOS가 필요해진다.

          • 펌웨어는 기능을 루프하도록 되어있다.

            • 과거에는 OS가 올라간 펌웨어가 없었기 때문에 OS와 분리된 개념으로 보고 엄밀히 보면 OS없는 것을 펌웨어라고 한다.
            • 최근에는 펌웨어에 OS가 올라간 형태를 펌웨어라고 통칭하기도 함
            • 인터럽트 핀 방식으로 외부 입력 비동기적으로 처리할 수 있음
            • 펌웨어 크기는 최소 수백메가에서 수백기가까지 다르다.

              • 몇메가 수준도 가능하다.
        • 부트로더 : 부팅 과정에서 다음에 실행될 프로그램 로딩
  • Microprocessor Unit, MCU
  • 과거 임베디드 제품 특징

    • 구조가 단순하여 공격 벡터가 많지 않음

      • → 간단한 보완 해결 가능
    • HW에 대한 정보가 잘 공유되지 않아 해커의 정보 수집 어려움
    • 사용할 수 있는 해킹 도구가 흔하지 않았음

      • HW 디버깅 도구나 기술이 적었음
      • 개발 도구가 굉장히 비싼 편
  • 현대의 임베디드/IoT 제품 특징

    • 연결성 : 쉽게 접근 가능
    • 휴대성 : 위치 정보 등 사생활 침해 가능
    • 위험성 : 오작동 시 치명적 피해 발생 가능
    • 레거시 코드 : 산업 장비(비용 때문에 교체를 꺼림) 등 펌웨어 업데이트, 관리가 거의 안 되는 제품 많음 → 취약성 높음
    • 리버싱 난이도 하향 : HW, CPU 아키텍처 정보 공유됨, HW/SW 디버깅 기술이 진보했고 편리해짐
  • 임베디드 제품 구성

    • SoC(System on Chip), MCU

      • MCU는 코어 외에 주변장치(각종 컨트롤러)들 포함

        • MCU는 RTOS 수준, 메모리도 포함되 있음
      • SoC는 MCU에 고성능 컨트롤러가 추가됨, 여러가지 기능들

        • GPU, 인코더 등 (컨트롤러, 칩들이 다른 전원 사용)
        • 범용 OS가 올라갈 수 있고, 메모리는 빠짐
        • DRAM, 저장장치, 부팅장치(SD카드, 낸드플래시) 등을 따로 붙여줘야 함
    • DRAm, Flash 메모리
    • 통신 인터페이스(UART, I2C, SPI)

      • Universal Asynchronous Receiver/Transmitter : 비동기 통신 전용 HW, 없으면 비동기 통신 프로토콜 직접 구현해야 함
      • Inter-Integrated Circuit : MCU와 주변장치의 통신을 하는 Two Wire Interface
      • Serial Peripheral Interconnect : 모토로라 개발 전이중통신 동기식 통신 규격
    • 외부 통신 모듈
    • 디스플레이 장치
    • 전원부

      • PMIC : 칩 별로 필요 전원이 다르기 때문에 맞춰서 전원 공급해줌
  • Flash

    • NAND Flash : 배드가 많이 나도 사용 가능
    • NOR Flash
    • SPI Flash
    • EEPROM
  • SIP, System in Package
  • 외부 통신 모듈

    • Wi-Fi module
    • Bluetooth module
    • Wi-Fi/BT module
    • DMB
  • 일반적 HW 해킹

    • 펌웨어 추출 → 획득

      • 제품 Support site
      • 제품 펌웨어 업데이트 시 패킷 캡쳐

        • 펌웨어와 펌웨어 url주소 획득 후 업데이트 인증 방식을 알아내서 업데이트 패킷을 캡쳐한다, → 업데이트 과정 중 버그를 찾아냄
      • 부트로더 기능 이용 펌웨어 dump

        • Serial Port → 부트로더 쉘 → 부트로더 내장 기능 → 커널 인자 활용해 펌웨어 획득
      • OS 기능 이용 펌웨어 dump

        • Linux 계열, POSIX 지원 OS, RTOS

          • 플래시 FS와 Partitioning 지원
          • /dev/mtdblock0 등 dev 파일 접근하여 쉽게 저장장치 접근 가능
          • mtd tool 사용하여 펌웨어 dump

            • MTD(Memory Technology Device) : 플래시 메모리를와 상위 application 계층를 연결 통신하기 위한 별도 계층의 디바이스 파일
      • JTAG 디버거 연결해서 펌웨어 dump

        • JTAG 디버거를 통해 펌웨어 획득

          • SoC 코어 및 주변 입출력 버스에 접근 가능

            • Core Register, Memory, 각종 controller, 주변 장치 등
          • JTAG을 뚫으면 모두 침투 당하는 것과 마찬가지
      • Chip Off

        • 플래시 칩 떼어내기

          • 매우 어렵다

            • 디솔더링, 리볼링
          • 고가의 데이터를 읽어내는 툴 사용
    • 펌웨어 리버싱 → 취약점 분석
    • 외부 통신 인터페이스로 퍼징
    • 취약점 공격 코드
  • Decapping : the process of removing the protective cover of a microchip so that the contained die is revealed for visual inspection of the micro circuitry imprinted on the die.
  • SEM(Scanning Electron Microscope)(주사전자현미경) Imaging

    • 디캐핑 후 이미징함
    • 전자를 쏘아 튕겨져 나오는 전자로 이미지화함